// 导出一个axios的实例  而且这个实例要有请求拦截器 响应拦截器
import axios from 'axios'
import store from '@/store'
import router from '@/router'
import { Message } from 'element-ui'
const service = axios.create({
  baseURL: '/api'
}) // 创建一个axios的实例
// service.interceptors.request.use() //请求拦截器

/** 添加请求拦截器 **/
service.interceptors.request.use(
  config => {
    const token = store.state.user.token
    if (token) {
      // 成功
      config.headers.Authorization = `Bearer ${token}`
    }

    return config
  },
  error => {
    return Promise.reject(error)
  }
)
// service.interceptors.response.use() //响应拦截器

service.interceptors.response.use(
  response => {
    if (!response.data.success) {
      return Promise.reject(response.data.message)
    }
    return response
  },
  err => {
    // 处理token失效
    // 判断是否是401错误且code是不是10002
    if (err.response.status === 401 && err.response.data.code === 10002) {
      // 清空用户信息及token
      store.commit('user/removeToken')
      store.commit('user/removeUserInfo')
      // 返回登录页 并携带失效的页面的地址
      router.push('/login?url=' + encodeURIComponent(router.currentRoute.fullPath))
      Message.error('用户身份认证失效,请您重新登录')
    }
    return Promise.reject(err)
  }
)
export default service // 导出axios实例
